In the latter half of the twentieth century, there began a phenomenon known as the information revolution. While the information revolution is a historical development broader in scope than any one event or machine, no single device has come to represent the information revolution more than the digital electronic computer. The development of computer systems has surely been a revolution. Each year, computer systems grow faster, store more data, and provide more applications to their users.
A modern computer system is an enormously complex machine, usually having many sub-parts or subsystems, each of which may be concurrently performing different functions in a cooperative, although partially autonomous, manner. Typically, the system comprises one or more central processing units (CPUs) which form the heart of the system, and which execute instructions contained in computer programs. Instructions and other data required by the programs executed by the CPUs are stored in memory, which often contains many heterogenous components and is hierarchical in design, containing a base memory or main memory and various caches at one or more levels. At another level, data is also stored in mass storage devices such as rotating disk drives, tape drives, and the like, from which it may be retrieved and loaded into memory. The system also includes hardware necessary to communicate with the outside world, such as input/output controllers; I/O devices attached thereto such as keyboards, monitors, printers, and so forth; and external communication devices for communicating with other digital systems. Internal communications buses and interfaces, which may also comprise many components and be arranged in a hierarchical or other design, provide paths for communicating data among the various system components.
For many reasons, computer systems are usually physically constructed of multiple modular components, each having some pre-defined interface to one or more other components. From the standpoint of the system, a modular component may be viewed as a “black box” which conforms to the pre-defined interface. Any component, regardless of internal structure, which conforms to the same pre-defined interface can be substituted for an existing component in the design of the computer system. This approach enables considerable flexibility in the design and configuration of computer systems. It is possible to improve the design of a computer system by improving the internal design of a modular component (while conforming to the same interface), without affecting other components of the system.
The modularization of computer components may be viewed at any of several levels of generality. At a relatively low level, individual logic gates on a semiconductor chip may be viewed as modular components. Functional units within the chip, such as an adder or an instruction decoder within a processor, are a higher level of modular component. The entire chip itself is also a modular component at still a higher level. This chip is usually mounted on a printed circuit board with other chips, connectors, and discrete components, the printed circuit board assembly being another level of modularity. Multiple circuit boards or other components may be constructed as a functional unit at a still higher level of modularity.
At some level of modularity, the component may be designed to be physically replaceable with an equivalent component after manufacture of the computer system. I.e., the component will be coupled to other components in the system using electrical connectors, clips, threaded fasteners, and the like, which are designed for coupling and uncoupling after manufacture. Such physically replaceable components are referred to as “field replaceable units” (FRUs). A finished electronic circuit board assembly, complete with all components soldered in place, is often designed as such a FRU, while an integrated circuit chip typically is not. The use of such field replaceable units facilitates the replacement of a defective component with a new component of identical type after system manufacture. It also facilitates the re-configuration or upgrade of an existing physical computer system by substituting a newer or enhanced version of a FRU for the existing unit. Additionally, a computer system may be constructed with unused couplings, which provide support for later upgrading the computer system by attaching additional FRUs to the unused couplings. The use of multiple types of FRUs attached to generic couplings enables a basic computer system design to be configured in any one of a very large number of configuration permutations.
A complex computer system may contain a large number of FRUs of a given type, which are difficult to visually distinguish. For example, electronic logic circuitry is typically contained in multiple circuit card assemblies (a type of FRU), which are plugged into some form of card frame assembly (another type of FRU), which in turn may be housed in larger racks or similar units (another type of FRU). Physically, the racks look pretty much alike, the card frame assemblies look pretty much alike, and even many of the cards can look pretty much alike. A trained eye can generally tell the difference between a processor card (i.e., a card mounting one or more processor units) and a memory card (a card mounting banks of memory modules), but all processor cards may look alike and all memory cards may look alike. There may, in fact, be no physical difference whatsoever between two units, the only difference being logical assignments (such as addresses or identifiers) made by the computer system to distinguish one unit from another.
For maintenance and other purposes, it is often desirable to know which physical unit corresponds to a logical designation made by the computer system. For example, the internal diagnostics of a computer system may detect a defect in a memory card having a particular address range. However, this address range is simply a logical assignment of the computer system. In order to replace the defective memory card, one must determine which physical card corresponds to the address range at which the defect exists. The physical memory card is simply one of multiple cards, which appear identical. If there are a large number of such cards, it can be difficult to determine which card is the one corresponding to the address range in question. It will be understood that replacement of a unit is only one example of a situation in which it is desirable to identify the unit, there being many other such circumstances which do not involve replacement of the unit.
One technique for assisting the service person in this instance is to provide switchable indicator lights on the various units. Indicator lights often correspond to physical FRU's, but may be used for other physical components. For example, separate indicator lights may be associated with different physical ports or connectors of a single FRU. The lights are activated under control of the computer system itself. If a person wishes to know the physical location of a particular unit, he can command the computer to light up the indicator light of the unit corresponding to some logical designator (such as a memory address, in the case of a memory card). The system responds by switching on the indicator light, showing the person the corresponding physical unit. Where a large system is housed in a hierarchy of devices, such as cards in card frames, which are in turn in larger racks, the system can light up not only the card, but the card frame in which the card is located, and the rack in which the card frame is located, for easier determination of the card location.
Another recent development in the management of complex computer system resources is the logical partitioning of system resources. Conceptually, logical partitioning means that multiple discrete partitions are established, and the system resources of certain types are assigned to respective partitions. For example, processor resources of a multi-processor system may be partitioned by assigning different processors to different partitions, by sharing processors among some partitions and not others, by specifying the amount of processing resource measure available to each partition which is sharing a set of processors, and so forth. Tasks executing within a logical partition can use only the resources assigned to that partition, and not resources assigned to other partitions. Memory resources may be partitioned by defining memory address ranges for each respective logical partition, these address ranges not necessarily coinciding with physical memory devices.
Logical partitions are generally defined and allocated by a system administrator or user with similar authority. I.e., the allocation is performed by issuing commands to appropriate management software resident on the system, rather than by physical reconfiguration of hardware components. It is expected, and indeed one of the benefits of logical partitioning is, that the authorized user can re-allocate system resources in response to changing needs or improved understanding of system performance. Some logical partitioning systems support dynamic partitioning, i.e., the changing of certain resource definition parameters while the system is operational, without the need to shut down the system and re-initialize it.
Where a logically partitioned computer system utilizes lighted indicators for assisting maintenance personnel, it is often desirable to permit at least some tasks running in each partition to light up the indicator lights applicable to hardware used by that partition. Since multiple logical partitions may actually share the same physical hardware unit, this would mean that multiple tasks running in different partitions have authority to light up the same indicator light. This could create confusion among partitions and users regarding the state of indicator lights and authority to switch indicators.
Although not necessarily generally recognized, this situation further creates a potential security exposure. Generally, logical partitions act like separate computer systems, and any communication between processes executing in different partitions should pass through some defined channel. Systems may run under different security constraints, be accessible by different sets of users, and so forth. Indeed, one of the advantages of logical partitioning is to permit the same physical system to support different operating environments for different user needs. If multiple partitions having access to an indicator light can both switch the light on and off, and sense other partitions doing so, then a covert communications channel exists from one partition to the next, which is not necessarily monitored by any controlling operating system function. It is conceivably possible to communicate serial data back and forth by switching and sensing indicator lights shared by more than one partition.
There exists a need for a technique which will give processes in different logical partitions needed control over the relevant indicator lights, without creating covert communications channels or interfering with other essential functions.